<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8" />
		<title>5.列表排序</title>
		<!-- 引入开发版本的Vue -->
		<script type="text/javascript" src="../js/vue.js"></script>
	</head>
	<body>
		<!-- 准备好一个容器-->
		<div id="root">
			<h2>人员列表</h2>
			<input type="text" v-model="keyWord"> <br/><br/>
			<button @click="sortType = 0">原顺序</button>
			<button @click="sortType = 1">年龄降序</button>
			<button @click="sortType = 2">年龄升序</button>
			<!-- v-for遍历数组 -->
			<ul>
				<li v-for="p in fltPersons" :key="p.id">
					{{p.name}}-{{p.age}}
				</li>
			</ul>
		</div>
	</body>

	<script type="text/javascript">
		Vue.config.productionTip = false //阻止 vue 在启动时生成生产提示。
		
		new Vue({
			el:'#root',
			data:{
				keyWord:'',
				sortType:0, //0原顺序 1年龄降序  2年龄升序
				persons:[
					{id:'001',name:'马冬梅',age:19},
					{id:'002',name:'周冬雨',age:30},
					{id:'003',name:'周杰伦',age:15},
					{id:'004',name:'温兆伦',age:17},
				]
			},
			computed:{
				fltPersons(){
					//arr是根据关键词过滤出来的新数组（新persons）
					const arr = this.persons.filter((p)=>{
						return p.name.indexOf(this.keyWord) !== -1
					})
					//若需要排序
					if(this.sortType){
						console.log('升序了，或者，降序了')
						arr.sort((a,b)=>{
							//根据升序、降序决定返回的排序规则
							return this.sortType === 1 ? b.age - a.age : a.age - b.age
						})
					}
					//返回一个新数组
					return arr
				}
			}
		})
	</script>
</html>